package com.corosus.game; import java.util.HashMap; import javax.vecmath.Vector2f; import com.artemis.Entity; import com.artemis.World; import com.artemis.WorldConfiguration; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.maps.tiled.TiledMap; import com.badlogic.gdx.maps.tiled.TiledMapRenderer; import com.badlogic.gdx.maps.tiled.TmxMapLoader; import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer; import com.corosus.game.client.assets.GameAssetManager; import com.corosus.game.client.input.InputHandler; import com.corosus.game.client.screen.ScreenActiveGame; import com.corosus.game.client.screen.TestScreen; import com.corosus.game.factory.EntityFactory; import com.corosus.game.system.GameInput; import com.corosus.game.system.MapRender; import com.corosus.game.system.SpriteRender; import com.corosus.game.system.SpriteSim; import com.corosus.game.system.WorldSim; public class Game_AI_TestBed extends Game { private static Game_AI_TestBed instance; private InputHandler inputHandler; /** * testing stuff */ public AssetManager am; private OrthographicCamera camera; //private Level level; private HashMap<Integer, Level> lookupLevels = new HashMap<Integer, Level>(); public static Game_AI_TestBed instance() { return instance; } @Override public void create() { instance = this; inputHandler = new InputHandler(); lookupLevels.put(0, new Level(0)); restart(); } public void restart() { /** * TEST */ GameAssetManager.instance().loadAnimations("imgs/sprites/animations.json"); GameAssetManager.instance().loadSprites("imgs/sprites/sprites.json"); GameAssetManager.instance().loadSounds("sounds/sounds.json"); this.am = new AssetManager(); this.am.setLoader(TiledMap.class, new TmxMapLoader(new InternalFileHandleResolver())); this.am.load(getLevel(0).getLevel(), TiledMap.class); this.am.finishLoading(); float w = Gdx.graphics.getWidth(); float h = Gdx.graphics.getHeight(); this.camera = new OrthographicCamera(); this.camera.setToOrtho(false, w, h); this.camera.update(); getLevel(0).restart(); /*world = new World(); world.setSystem(new SpriteSimulate(GameSettings.tickDelayGame)); world.setSystem(new WorldSys(GameSettings.tickDelayGame)); world.setSystem(new MapRender()); world.setSystem(new SpriteRender()); world.setSystem(new GameInput(GameSettings.tickDelayGame));*/ setScreen(new ScreenActiveGame()); Gdx.input.setInputProcessor(inputHandler); } public OrthographicCamera getCamera() { return camera; } public boolean isInView(Vector2f pos) { return isInView(pos, 0); } public boolean isInView(Vector2f pos, int padding) { if (pos.x + padding >= camera.position.x - (camera.viewportWidth/2 * camera.zoom) && pos.x - padding < camera.position.x + (camera.viewportWidth/2 * camera.zoom) && pos.y + padding >= camera.position.y - (camera.viewportHeight/2 * camera.zoom) && pos.y - padding < camera.position.y + (camera.viewportHeight/2 * camera.zoom)) { return true; } return false; } /** * Mainly for artemis/gdx calls to the level we wanna render, a sort of placeholder for potential future multi level handling * * @return */ public Level getActiveLevel() { return getLevel(0); } public Level getLevel(int levelID) { return lookupLevels.get(levelID); } public void process(float delta) { getActiveLevel().process(delta); } @Override public void dispose() { super.dispose(); getActiveLevel().dispose(); } }